#include <iostream>

using namespace std;

// 104. 二叉树的最大深度
// 给定一个二叉树 root ，返回其最大深度。
// https://leetcode.cn/problems/maximum-depth-of-binary-tree/
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(): val(0),left(nullptr),right(nullptr) {}
    TreeNode(int x): val(x),left(nullptr),right(nullptr) {}
};

class Solution {
public:
    int maxDepth(TreeNode* root) {
        // 递归终止条件
        if (root == nullptr)
            return 0;

        int leftMaxDepth = maxDepth(root->left);
        int rightMaxDepth = maxDepth(root->right);
        return max(leftMaxDepth, rightMaxDepth) + 1;
    }
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
